Операторы from и of

В RxJS существует два оператора - from и of, которые используются для создания наблюдаемых последовательностей. Они имеют некоторые отличия в том, как они работают. Давайте рассмотрим каждый из них и объясним их детали.

1. from: Оператор from используется для преобразования различных источников данных в наблюдаемую последовательность. Он может принимать массив, строку, обещание, итерируемый объект и другие типы данных и преобразовывать их в наблюдаемую последовательность.

Вот примеры кода, демонстрирующие использование from:

import { from, of } from 'rxjs'

// Преобразование массива в наблюдаемую последовательность
const array = [1, 2, 3]
const arrayObservable = from(array)
arrayObservable.subscribe((value) => {
	console.log(value)
})

// Преобразование строки в наблюдаемую последовательность
const string = 'Hello'
const stringObservable = from(string)
stringObservable.subscribe((value) => {
	console.log(value)
})

// Преобразование обещания в наблюдаемую последовательность
const promise = new Promise((resolve) => {
	setTimeout(() => {
		resolve('Resolved!')
	}, 2000)
})
const promiseObservable = from(promise)
promiseObservable.subscribe((value) => {
	console.log(value)
})

В первом примере мы преобразуем массив [1, 2, 3] в наблюдаемую последовательность с помощью from. Затем мы подписываемся на эту последовательность и выводим значения в консоль.

Аналогично, во втором примере мы преобразуем строку 'Hello' в наблюдаемую последовательность и выводим ее символы в консоль.

В третьем примере мы преобразуем обещание с задержкой в наблюдаемую последовательность. Когда обещание разрешается, мы получаем значение 'Resolved!' и выводим его в консоль.

2. of: Оператор of используется для создания наблюдаемой последовательности с заданными значениями. Он принимает значения как аргументы и создает наблюдаемую последовательность, излучая эти значения последовательно.

Вот пример кода, демонстрирующий использование of:

import { of } from 'rxjs'

const observable = of(1, 2, 3)
observable.subscribe((value) => {
	console.log(value)
})

В этом примере мы создаем наблюдаемую последовательность с помощью of и передаем в него значения 1, 2 и 3. Затем мы подписываемся на эту последовательность и выводим значения в консоль.

Основное отличие между from и of заключается в том, что from используется для преобразования различных источников данных в наблюдаемую последовательность, в то время как of используется для создания наблюдаемой последовательности с заданными значениями.